package model

import (
	"chat_srv/basic/config"
	"time"
)

// 用户兴趣标签
type XqUserInterests struct {
	Id        int64     `gorm:"column:id;type:bigint;primaryKey;not null;" json:"id"`
	UserId    int64     `gorm:"column:user_id;type:bigint;comment:用户ID;not null;" json:"user_id"`        // 用户ID
	TagId     int64     `gorm:"column:tag_id;type:bigint;comment:标签ID;not null;" json:"tag_id"`          // 标签ID
	Weight    float32   `gorm:"column:weight;type:float;comment:兴趣权重（1.0-5.0）;default:1;" json:"weight"` // 兴趣权重（1.0-5.0）
	CreatedAt time.Time `gorm:"column:created_at;type:timestamp;default:CURRENT_TIMESTAMP;" json:"created_at"`
	UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;default:CURRENT_TIMESTAMP;" json:"updated_at"`
}

// 设置与数据库的映射
func (xui *XqUserInterests) TableName() string {
	return "xq_user_interests"
}

type UserInterest struct {
	TagId    int64  `gorm:"tag_id" json:"tag_id"`     // 标签ID
	UserId   int64  `gorm:"user_id" json:"user_id"`   // 用户id
	Category string `gorm:"category" json:"category"` // 标签分类
}

// 获取用户的兴趣标签
func (xui *XqUserInterests) GetUserInterests(userId int64) (interests []*UserInterest, err error) {
	err = config.DB.
		Table("xq_user_interests xui").
		Select("xui.tag_id,xui.user_id,xq_interest_tags.category").
		Joins("left join xq_interest_tags on xui.tag_id = xq_interest_tags.id").
		Where("xui.user_id = ?", userId).
		Find(&interests).Error
	return interests, err
}
